<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function Person() {
            //prototype
            //constructor=function Person(){}
        }

        Person.prototype.name = 'Rick';
        Person.prototype.age = 23;
        Person.prototype.sayName = function () {
            alert(this.name);
        }

        var p1 = new Person();
        var p2 = new Person();
        p1.name="ABC";
        p2.name="cba";
        console.log(p1.name+p2.name);
        console.log(p1.sayName === p2.sayName);  // true

    </script>
</head>
<body>
    原型模式创建对象
    <p>1. 理解原型对象
        任何时候，只要创建了一个新函数，就会为该函数创建一个prototype属性，这个属性指向该函数的原型对象。
        默认情况下，所有原型对象都会自动获得一个constructor（构造函数）属性，这个属性包含一个指向prototype属性所在函数的指针。
        前面例子来看，Person.prototype.constructor指向Person，通过这个构造函数，我们还可以继续向原型对象添加其他属性和方法。
    </p>
<p>
    •	isPrototypeOf()：判断某个函数的原型对象是否是一个实例对象的原型对象；
    •	getPrototypeOf()：取得某个实例的原型对象；
    • <a href="jsobject/hasOwnProperty.html"> hasOwnProperty()</a> hasOwnProperty()：检测一个属性时存在实例中，还是存在原型对象中。

</p>
<p><a href="jsobject/prototype.html">更简单的语法</a></p>
</body>
</html>